The quality of the output generated by modern computer printing systems has increased greatly in recent years. Among the improvements seen are higher resolution, device independent color and contone (continuous tone) imaging. These advanced capabilities greatly increase the requirements for computing resources available to the printer controller. Included among these are requirements for greater amounts of main memory for storing data as well as a sophisticated control program and means to store it. These features add significantly to the cost of the printer.
One way to provide advanced functionality while maintaining low cost is to provide a host raster image processor (RIP). RIP is a program that generates a bit map of the image to be printed. This bit map is used by printing hardware to produce the printed page. Normally the RIP resides in the printer where it interprets commands received from the host computer. In the case of a host RIP, the print data is processed on the host computer and the resulting bit map is then sent to the printer. This means that the RIP makes use of the computing resources in the host computer rather than in the printer. Since the printer does not need to provide these resources, the printer can be simpler and cheaper to manufacture.
A host RIP suffers a number of disadvantages. For example, demanding computing resources from the host computer to perform the RIP function takes the computing resources away from the user. A host RIP can greatly increase the delay between when a user issues a command to print and when the user is able to use the computer again. Another disadvantage is that the host RIP must download the entire bit map to the printer. Modern printer data streams are based upon concise descriptions of a page. Downloading a full bit map involves transferring a much greater amount of data than the data required if the bit map is generated at the printer, thereby involving still more work for the host to perform, as well as tying up a communications channel for a longer period of time. In addition, some print mechanisms have strict time constraints on when the data must be available. For example, once a laser printer begins to print a page, all the data for that page must be available without interruption. Typical communications channels between the host and print mechanism cannot be relied upon to supply the data at exactly the correct rate, thereby requiring either buffers in the print mechanism or a dedicated real time communications circuit within the host. Even when a communication channel supports the time constraints for data to such print mechanisms, a typical data processing host cannot satisfy the time constraints. Guaranteed response to requests with real time constraints defines a particular class of processing known as "real time operating systems".
Low cost basic printers will often have only very limited capabilities. In some cases, such a printer may be upgraded by adding more advanced features. This has the shortcoming of requiring "upgradeability" to be part of the printer's initial design. This may require the inclusion of extra sockets or connectors, as well as a more complex design, or even the inclusion of empty space under the covers to provide room for upgrades. In addition, there are features which may be difficult or unsuitable to provide as upgrades, or may be incompatible with one another. For example, full color laser printers do exist, yet it may always be impractical to upgrade to this capability starting from a monochrome laser printer.
When new printing requirements cannot be satisfied by upgrading current hardware, the only apparent solution is to provide a multiple printing system. Each printer of the system operates independently of any other printer in the system, and therefore, has independent requirements for memory and control programs. For example, a user may require the use of both a laser printer and a color ink jet printer. If both of these printers were originally configured such that they could only interpret a less sophisticated data stream, upgrading the control program of one would not benefit the other. Similarly, if both printers are constrained by limited memory resources, adding memory to one will not benefit the other.
Printers typically include many subsystems, such as an input/output (IO) subsystem for handling communication, a controller, and a print engine. Typically, the printer receives a data stream from a computer through the IO subsystem, the controller processes the data stream to generate a bit map, and the controller sends the bit map to the print engine to form an image corresponding to the data stream on a print media.
During operation, the controller executes a printer control program designed with an understanding of the hardware constraints, or characteristics, of the hardware it is to control. Among these characteristics are resolution, print media size, color capability, binary vs. contone printing, etc. Some of these characteristics can be manipulated among a finite set of values, while other characteristics cannot be modified at all. For example, the size of the paper might be changed from letter size to legal size, but the print mechanism places an absolute upper limit on what sizes of print media can be supported.
The print engine dictates how many bit planes the bit map should contain. For example, a monochrome print engine uses only a single bit plane for each page. Print engines which produce color output require multiple bit planes in order to produce a multiplicity of colors, one for each primary color utilized by the print engine. For example, a print engine which uses the primary colors cyan, magenta, and yellow (CMY) requires three bit planes, and a print engine which uses the primary colors cyan, magenta, yellow, and black (CMYK), requires four bit planes.
Because these and other characteristics are determined by the print engine, they are either fixed or limited to a specific set of possible values. Thus, prior to the invention the controller of a printer would not configure the bit map using parameters outside of the range of values which are appropriate for the print engine of the printer. For example, the controller would not produce a bit map for a tabloid size page if the print engine is unable to handle media that large, or would not generate multiple bit planes if the print engine is monochrome.